package com.ruoyi.common.utils;

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

/**
 * qq邮箱发送工具
 * @author asus
 */
public class QQSMSUtils {
    public static final String TOKEN = "eekwcmzjanwyechj" ;
    public static final String SEND_QQ_ACCESS = "2608189833@qq.com" ;
    public static final String QQ_EMAIL_HOST = "smtp.qq.com" ;
    public static final String QQ_EMAIL_PROTOCOL = "smtp" ;
    public static final String QQ_EMAIL_CONTENT_TYPE = "text/html;charset=utf-8" ;

    public static void testMail (String email,String emailCode) throws Exception {
        // 邮件主题
        final String title = "邮箱验证码";
        // 使用QQ邮箱时配置
        Properties prop = new Properties();
        // 设置QQ邮件服务器
        prop.setProperty("mail.host", QQ_EMAIL_HOST);
        // 邮件发送协议
        prop.setProperty("mail.transport.protocol", QQ_EMAIL_PROTOCOL);
        // 需要验证用户名和密码
        prop.setProperty("mail.smtp.auth", "true");
        // 创建定义整个邮件程序所需的环境信息的 Session 对象，QQ才有，其他邮箱就不用了
        Session session = Session.getDefaultInstance(prop, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                // 发件人邮箱用户名，授权码
                return new PasswordAuthentication(SEND_QQ_ACCESS, TOKEN);
            }
        });
        // 开启 Session 的 debug 模式，这样就可以查看程序发送 Email 的运行状态
//        session.setDebug(true);
        // 通过 session 得到 transport 对象
        Transport ts = session.getTransport();
        // 使用邮箱的用户名和授权码连上邮箱服务器
        ts.connect(QQ_EMAIL_PROTOCOL, SEND_QQ_ACCESS, TOKEN);
        // 创建邮件，写邮件
        MimeMessage message = new MimeMessage(session);
        // 指明邮件的发件人
        message.setFrom(new InternetAddress(SEND_QQ_ACCESS));
        // 指明邮件的收件人
        message.setRecipient(Message.RecipientType.TO, new InternetAddress(email));
        // 邮件主题
        message.setSubject(title);
        // 邮件内容
        message.setContent("邮箱验证码为：" + emailCode, "text/html;charset=utf-8");
        // 发送邮件
        ts.sendMessage(message, message.getAllRecipients());
        System.out.println("发送成功");
        // 释放资源
        ts.close();
    }

    public static void noticeTalentEmail (String email,String titleInfo,String content) throws Exception {
        // 使用QQ邮箱时配置
        Properties prop = new Properties();
        // 设置QQ邮件服务器
        prop.setProperty("mail.host", QQ_EMAIL_HOST);
        // 邮件发送协议
        prop.setProperty("mail.transport.protocol", QQ_EMAIL_PROTOCOL);
        // 需要验证用户名和密码
        prop.setProperty("mail.smtp.auth", "true");
        // 创建定义整个邮件程序所需的环境信息的 Session 对象，QQ才有，其他邮箱就不用了
        Session session = Session.getDefaultInstance(prop, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                // 发件人邮箱用户名，授权码
                return new PasswordAuthentication(SEND_QQ_ACCESS, TOKEN);
            }
        });
        // 开启 Session 的 debug 模式，这样就可以查看程序发送 Email 的运行状态
//        session.setDebug(true);
        // 通过 session 得到 transport 对象
        Transport ts = session.getTransport();
        // 使用邮箱的用户名和授权码连上邮箱服务器
        ts.connect(QQ_EMAIL_HOST, SEND_QQ_ACCESS, TOKEN);

        // 创建邮件，写邮件
        MimeMessage message = new MimeMessage(session);
        // 指明邮件的发件人
        message.setFrom(new InternetAddress(SEND_QQ_ACCESS));
        // 指明邮件的收件人
        message.setRecipient(Message.RecipientType.TO, new InternetAddress(email));
        // 邮件主题
        message.setSubject(titleInfo);
        // 邮件内容
        message.setContent(content, QQ_EMAIL_CONTENT_TYPE);
        // 发送邮件
        ts.sendMessage(message, message.getAllRecipients());
        System.out.println("发送成功");
        // 释放资源
        ts.close();
    }
}
